---
title: "Linux Module 和驱动"
date: 2020-1-18
categories:
- linux
tags:
---

<div id="content">
<div id="table-of-contents">
<h2>Table of Contents</h2>
<div id="text-table-of-contents">
<ul>
<li><a href="#orgfcf93f4">mod</a>
<ul>
<li><a href="#org452ae3b">modprobe :: 从内核中添加或移除模块</a></li>
<li><a href="#org9cf5d1c">dmesg :: 打印或控制内核 ring buffer</a></li>
<li><a href="#org1542ed6">lspci :: 列出所有的PCI设备</a></li>
</ul>
</li>
<li><a href="#orgab4c899">dkms</a></li>
<li><a href="#org7f7de94">Journal</a></li>
</ul>
</div>
</div>
<div class="outline-2" id="outline-container-orgfcf93f4">
<h2 id="orgfcf93f4">mod</h2>
<div class="outline-text-2" id="text-orgfcf93f4">
</div>
<div class="outline-3" id="outline-container-org452ae3b">
<h3 id="org452ae3b">modprobe :: 从内核中添加或移除模块</h3>
<div class="outline-text-3" id="text-org452ae3b">
<p>
相间的命令: insmod(8), rmmod(8), lsmod(8), modinfo(8)
</p>
</div>
</div>
<div class="outline-3" id="outline-container-org9cf5d1c">
<h3 id="org9cf5d1c">dmesg :: 打印或控制内核 ring buffer</h3>
<div class="outline-text-3" id="text-org9cf5d1c">
<div class="org-src-container">
<pre class="src src-sh"><span style="font-weight: bold; font-style: italic;"># </span><span style="font-weight: bold; font-style: italic;">查看模板加载的问题</span>
sudo modprobe rtl8821ce &amp;&amp; dmesg | grep rtl
</pre>
</div>
</div>
</div>
<div class="outline-3" id="outline-container-org1542ed6">
<h3 id="org1542ed6">lspci :: 列出所有的PCI设备</h3>
</div>
</div>
<div class="outline-2" id="outline-container-orgab4c899">
<h2 id="orgab4c899">dkms</h2>
<div class="outline-text-2" id="text-orgab4c899">
<p>
Dynamic Kernel Module Support, 当升级内核时，自动重新构建通过它管理的内核模块，以适应新的内核版本。
这个命令也许需要权限运行。
</p>
</div>
</div>
<div class="outline-2" id="outline-container-org7f7de94">
<h2 id="org7f7de94">Journal</h2>
<div class="outline-text-2" id="text-org7f7de94">
<blockquote>
<p>
<a href="https://askubuntu.com/questions/1188450/wifi-rtl8821ce-driver-stopped-working-after-upgrading-to-ubuntu-19-10?noredirect=1">https://askubuntu.com/questions/1188450/wifi-rtl8821ce-driver-stopped-working-after-upgrading-to-ubuntu-19-10?noredirect=1</a>
</p>
</blockquote>
<p>
今天升级了内核，重启之后无线网卡就没有了。机器是联想的笔记本，网卡为rtl8821ce。没有官方的驱动，使用 <a href="https://github.com/Lulzx/rtl8821ce">github</a> 上的驱动。
</p>
<p>
这使用dkms管理，一般升级内核后应该会自动构建的，但这次网卡还是挂了。
</p>
<p>
首先想到的是从git上拉最新的代码，重新构建驱动。但是尝试后还是无法启动网卡。
</p>
<p>
找到了上面的文章，用里面的命令尝试过，思路是对的：首先移除以前的模块(dkms-remove)，然后安装新的模板。
除了一个特殊的问题，git新拉的代码，编译的module名字不再是rtl8821ce了，而是8821ce（通过查看命令的输出还是能找到问题的）。
</p>
<p>
所以，卸载所有的旧模块rtl8821ce，安装新的模块8821ce，重启。无线网卡回来了。
</p>
</div>
</div>
</div>
<div class="status" id="postamble">
<p class="date">Date: 2020-1-18</p>
<p class="author">Author: gdme1320</p>
<p class="validation"><a href="http://validator.w3.org/check?uri=referer">Validate</a></p>
</div>
